package com.ushine.web.base.facade;

import com.ushine.web.base.model.redis.UserRedisBO;
import com.ushine.web.base.model.system.DataPermissionDO;
import com.ushine.web.base.model.system.UserDO;
import com.ushine.web.component.exception.ServiceException;

/**
 * @Author: yls
 * @Date: 2022/02/21 16:21
 * @Description: 用户信息缓存
 * @Version 1.0
 */
public interface IUserRedisFacade {

    /**
     * 功能描述:
     * 〈 添加用户的缓存信息 〉
     *
     * @param user 用户信息
     * @return : java.lang.Boolean
     * @author : yls
     * @date : 2022/02/21 16:24
     */
    Boolean insertUserInfo(UserDO user);

    /**
     * 功能描述:
     * 〈 删除用户的缓存信息 〉
     *
     * @param username 用户名
     * @return : java.lang.Boolean
     * @author : yls
     * @date : 2022/02/21 16:23
     */
    Boolean deleteUserInfo(String username);

    /**
     * 功能描述:
     * 〈 根据用户名取用户的信息 〉
     *
     * @param username 用户名
     * @return : com.ushine.web.base.model.redis.UserRedisBO
     * @throws ServiceException 服务端自定义异常
     * @author : yls
     * @date : 2022/02/21 16:26
     */
    UserRedisBO getUserInfo(String username) throws ServiceException;

    /**
     * 功能描述:
     * 〈 根据用户名获取登录用户的信息 〉
     *
     * @param username 用户名
     * @return : com.ushine.web.base.model.redis.UserRedisBO
     * @throws ServiceException 服务端自定义异常
     * @author : yls
     * @date : 2022/02/21 16:26
     */
    UserRedisBO getLoginUserInfo(String username) throws ServiceException;

    /**
     * 功能描述:
     * 〈获取用户当前方法的数据权限 〉
     *
     * @param username     用户名
     * @param functionName 方法关联名
     * @return : com.ushine.web.base.model.system.DataPermissionDO
     * @throws ServiceException 服务端自定义异常
     * @author : yls
     * @date : 2022/02/21 17:29
     */
    DataPermissionDO getUserDataPermission(String username, String functionName) throws ServiceException;
}
